class Solution {
public:
    void reverse(long long l,long long r,string& s)
    {
        while(l<r)
        {
            swap(s[l++],s[r--]);
        }
    }
    //这个题下标很难搞，必须画图
    string reverseStr(string s, int k) {
        long long sum=0;
        long long x=2*k;
        long long p=0;
        for(long long i=0;i<s.size();i++)
        {
            sum++;
            p++;
            if((sum%x)==0)
            {
                reverse(sum-k-k,sum-k-1,s);//注意串下标
                p=0;
            }
        }
        if(p>k)
        {
            reverse(s.size()-p,s.size()-p+k-1,s);
        }
        else if(p>0&&p<=k)
        {
            reverse(s.size()-p,s.size()-1,s);
        }
        return s;
    }
};